<%@ page import="com.itheima.domain.Student" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL表达式</title>
</head>
    <body>

    <%--
    EL表达式: ${表达式内容}
    用于jsp页面获取 作用域 中的数据
    从小到大的搜索范围是pageContext request session application
    如果作用域中没有数据,不会报错

    --%>
    <%
    String username = "张琪瑛";
    application.setAttribute("username",username);
    session.setAttribute("username","曹婴");
    request.setAttribute("username","黄月英");
    pageContext.setAttribute("username","甄宓");


    %>
    jsp表达式: <%=username%><br/>
    EL表达式: ${username}
    EL表达式: ${requestScope.username}
    EL表达式: ${sessionScope.username}
    EL表达式: ${applicationScope.username}






        <%--1.向域对象中添加数据--%>
    <% request.setAttribute("username","zhangsan"); %>

        <%--2.获取数据--%>
    Java代码块:<%out.println(request.getAttribute("username"));%>
    <br/>
    Jsp表达式:<%=request.getAttribute("username")%>
    <br/>
    EL表达式: ${username}


    <%--获取基本类型数据--%>

    <%request.setAttribute("number",12);%>

    EL表达式: ${number}
    <br/>

    <%--获取自定义对象类型数据--%>

    <%Student stu = new Student("张三",23);

    pageContext.setAttribute("stu",stu);

    %>

    EL表达式:没有空指针异常
    自定义对象:${stu}<br/>
    <%-- stu.name实现原理 getName()--%>
    学生姓名:${stu.name}<br/>
    学生年龄:${stu.age}<br/>


    <%-- 获取数组类型数据 --%>

    <%String[] arr ={"hello","world"};
    pageContext.setAttribute("arr",arr);

    %>

    EL表达式:${arr}    <br/>

    0索引元素: ${arr[0]}        <br/>
    1索引元素: ${arr[1]}        <br/>
    <%--EL表达式没有索引越界异常 输出无结果--%>

    7索引元素: ${arr[7]}        <br/>

    <%--索引直接相加会发生错误--%>
<%--    0索引拼接1索引:${arr[0]+arr[1]}--%>
    <%--EL表达式没有字符串拼接--%>
    0索引拼接1索引:${arr[0]}+${arr[1]}


    <%--获取list集合类型数据--%>

    <%ArrayList<String> list = new ArrayList<>();
    list.add("aaa");
    list.add("bbb");
    list.add("ccc");

    pageContext.setAttribute("list",list);
    %>

    list集合:${list}      <br/>

    0索引元素:${list[0]}    <br/>

    <%--获取Map集合类型数据--%>

    <%HashMap<String,Student> map = new HashMap<>();
    map.put("hm1",new Student("张三",23));
    map.put("hm2",new Student("李四",24));
    pageContext.setAttribute("map",map);

    %>
    map集合: ${map}     <br/>
    第一个学生对象: ${map.hm1}  <br/>
    第一个学生姓名: ${map.hm1.name}  <br/>


    <%--三元运算符。获取性别的数据，在对应的按钮上进行勾选--%>

    <%pageContext.setAttribute("gender","women");%>
    <input type="radio" name="gender" value="men" ${gender=="men"? "checked":""}>男
    <input type="radio" name="gender" value="women" ${gender=="women"? "checked":""}>女
    <br/>


    <%--EL表达式获取四大作用域对象数据--%>

    <%
        application.setAttribute("username","zhangsan");
        session.setAttribute("username","zhangsan");
        request.setAttribute("username","zhangsan");
        pageContext.setAttribute("username","zhangsan");

    %>

    <%--EL表达式获取域对象名称从小到大 --%>
    ${username}      <br/>


    <%--pageContext对象可以获取其他三大域对象和jsp中八个隐式对象--%>

    ${pageContext.request.contextPath} <br/>


    <%--applicationScope  requestScope  sessionScope  pageContextScope
            操作四大域对象中的数据--%>


    <%request.setAttribute("username","zhangsan");%>
    ${username}    <br/>
    ${requestScope.username}    <br/>

    <%--获取请求头对象--%>
    ${header["connection"]}   <br/>
    ${headerValues["connection"][0]}    <br/>


    <%--获取cookie信息--%>

    ${cookie}  <br> <%--获取Map集合--%>
    ${cookie.JSESSIONID}  <br> <%--获取map集合中第二个元素--%>
    ${cookie.JSESSIONID.name}  <br> <%--获取cookie对象的名称--%>
    ${cookie.JSESSIONID.value} <%--获取cookie对象的值--%>


    </body>
</html>
